/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.conversores;

import Mproyectos.controladores.ControladorAsesor;
import Mproyectos.entidades.Asesor;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

/**
 * Convertir para la clase asesor
 */
@FacesConverter("conversorAsesor")
public class ConversorAsesor implements Converter {

    /**
     * Devuelve el asesor como objeto cuando se envia el nombre en texto
     *
     * @param context
     * @param component
     * @param value
     * @return El asesor que en la base de datos tiene ese nombre
     */
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {

        // Cargar el controlador de la asesor 
        ControladorAsesor controlador = (ControladorAsesor) context.getApplication().getELResolver().
                getValue(context.getELContext(), null, "controladorAsesor");

        // Obtener la fachada y buscarla
        return controlador.getFachadaAsesor().buscar(value);
    }

    /**
     * Retorna el nombre del asesor si el objeto enviado es un asesor, si no
     * devuelve la cadena desconocido
     *
     * @param context
     * @param component
     * @param value
     * @return El nombre del asesor
     */
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        // Verifica si es del tipo asesor y le saca el nombre 
        if (value instanceof Asesor) {
            Asesor asesor = (Asesor) value;
            return asesor.getNombre();
        }

        return "Desconocido";
    }
}
